21 research outputs found

    Structuring Interactive Correctness Proofs by Formalizing Coding Idioms

    Get PDF
    This paper examines a novel strategy for developing correctness proofs in interactive software verification for C programs. Rather than proceeding backwards from the generated verification conditions, we start by developing a library of the employed data structures and related coding idioms. The application of that library then leads to correctness proofs that reflect informal arguments about the idioms. We apply this strategy to the low-level memory allocator of the L4 microkernel, a case study discussed in the literature

    Semi-automatic Proofs about Object Graphs in Separation Logic

    Get PDF
    Published correctness proofs of garbage collectors in separationlogic to date depend on extensive manual, interactive formulamanipulations. This paper shows that the approach of symbolicexecution in separation logic, as first developed by Smallfoot,also encompasses reasoning about object graphs given by the reachabilityof objects. This approach yields semi-automatic proofs oftwo central garbage collection algorithms: Schorr-Waite graph marking and Cheney's collector. Our framework is developed as a conservativeextension of Isabelle/HOL. Our verification environment re-uses theSimpl framework for classical Hoare logic

    High-level Proofs about Low-level Programs

    Get PDF
    Functional verification of low-level code requires abstractions over the memory model to be effective, since the number of side-conditions induced by byte-addressed memory is prohibitive even with modern automated reasoners. We propose a flexible solution to this challenge: assertions contain explicit memory layouts which carry the necessary side-conditions as invariants. The memory-related proof obligations arising during verification can then be solved using specialized automatic proof procedures. The remaining verification conditions about the content of data structures directly reflect a developer's understanding. The development is formalized in Isabelle/HOL

    Erweitertes Literatur- und Archivalienverzeichnis zu: Holger Gast, Antonia Leugers, August H. Leugers-Scherzberg, Uwe Sandfuchs: Katholische Missionsschulen in Deutschland 1887-1940, Bad Heilbrunn: Verlag Julius Klinkhardt 2013

    Get PDF
    Bei dieser Online-Ressource handelt es sich um das erweiterte Literatur- und Archivalienverzeichnis zu der Studie: Holger Gast, Antonia Leugers, August H. Leugers-Scherzberg, Uwe Sandfuchs: Katholische Missionsschulen in Deutschland 1887-1940, Bad Heilbrunn: Verlag Julius Klinkhardt 201

    CIS: A Web-Based Course Information System

    Get PDF
    This report surveys the design and implementation of CIS, a web-based Course Information System. CIS has been developed for the Computer Science I/II courses held between 2000 and 2003 by Prof. Dr. R. Loos, which were attended by 300 to 450 students. It maintains and presents each student's submissions and grades and holds related information such as worksheet texts, submission deadlines and the assignment of students to teaching assistents. In short, it covers most of the administrative data that comes up in regular university courses. CIS is designed to be used by first-year students conveniently. It aims at modelling real-world procedures, so that the system behaviour can be explained in well-known analogies. It is minimalistic, in the sense that it only takes on the routine work, while leaving the teacher free in any questions of structuring the contents of the course. Our problem statement and analysis focuses to two aspects: The requirements on the central data base and the interfaces for three groups of users: Students, teaching assistants, and teachers/adminis-trators. The actual implementation is straightforward, and we only mention particular decisions taken herein. CIS has been in use at the Wilhelm-Schickard Institut for three years, in courses organized both by the authors and others. The experiences indicate that the system can be considered reliable and mature. As the effort of setting up CIS is small, it has become feasible to employ it for several advanced courses with fewer than 20 students

    How to use objects: code and concepts

    No full text

    Ein Generator für Typchecker

    No full text
    Compiler-compilers are tools that generate substitutes for hand-written compiler components from high-level formal specifications. Such tools exist for lexical, syntactic and semantic analysis, optimizers and code generation. The established benefits are reduced development time and increased confidence in the correctness of the resulting software. This thesis presents a generator for type checkers. Given a description of the type system by typing rules, the generator yields a type checker that constructs proofs using the typing rules. Unlike earlier approaches, we derive suitable notions of proof and typing rule from an analysis of type systems and from corresponding constructs in mathematical proof theory. The approach thus respects the structure and intention of the typing rules, rather than expressing the rules in some pre-existing formalism. The given applications comprise type checkers for imperative, object-oriented and functional languages, including ML type inference. The typing rules for these checkers directly represent those found in the literature. They naturally describe the typing of single language constructs and they can be re-used in different checkers. We use the generator to develop the language Saga for generic programming. Generic programming has become a standard approach to creating reusable and reliable software, particularly through the wide-spread use of the C++ Standard Template Library (STL). Existing C++ compilers cannot type-check generic algorithms before instances are generated, hence errors manifest themselves only when the algorithms are used. Saga overcomes this problem by a novel language design that enables generic algorithms as found in the C++ STL to be type-checked such that the correctness requirements stated in algorithm interfaces are obeyed and instantiation never fails. It therefore turns the aims of the earlier proposal SuchThat into a concrete language design.Compiler-compiler generieren aus formalen Spezifikationen Komponenten für Compiler, um dort handgeschriebenen Code ersetzen. Solche Generatoren existieren für die lexikalische, syntaktische und semantische Anlayse, für Optimierer und die Coderzeugung. Es hat sich gezeigt, daß die Entwicklungszeit abnimmt und gleichzeitig das Vertrauen in die Korrektheit der Software steigt. Die vorliegende Dissertation beschreibt einen Generator für Typchecker. Er erzeugt aus einer Spezifikation eines Typsystems, die in Form vom Typregeln gegeben ist, einen ablauffähigen Typchecker, der Typherleitungen mit Hilfe der gegebenen Regeln konstruiert. Abweichend von früheren Vorschlägen werden passende Definitionen für Typherleitung und Typregel durch Analyse existierender Typsysteme und der mathematischen Beweistheorie gewonnen. Auf diese Weise reflektiert der Ansatz die Struktur und Intention der Typsysteme, anstatt die Typregeln in einem bereits vorhandenen Formalismus auszudrücken. Als Anwendungen werden Typchecker für imperative, objekt-orientierte und funktionale Sprachen, einschließlich der ML Typinferenz, formalisiert. Die Typregeln dieser Checker korrespondieren direkt mit den aus der Literatur bekannten. Da sie sich einzelnen Sprachkonstrukten zuordnen lassen, können sie in verschiedenen Checkern wiederverwendet werden. Eine spezielle Anwendung ist die Sprache Saga für die Generische Programmierung. Die Generische Programmierung ist zu einem Standardansatz zur Erstellung verläßlicher und wiederverwendbarer Software geworden, insbesondere durch die weite Verbreitung der C++ Standard Template Library (STL). Der C++ Compiler kann allerdings die generischen Algorithmen erst dann prüfen, wenn konkrete Instanzen generiert werden. Fehler in den Algorithmen manifestieren sich daher erst bei der Benutzung. Saga löst dieses Problem durch eine neues Sprachdesign, das es erlaubt, generische Algorithmen der STL so zu überprüfen, daß die deklarierten Korrektheitsbedingungen erfüllt sind und die Instanzgenerierung nie fehlschlägt, wenn der Typchecker die Algorithmen akzeptiert. Damit realisiert Saga die Ziele des früheren Sprachvorschlags SuchThat in einem konkreten Sprachdesign

    Considerations on genericity for programming language design

    Get PDF
    Veröffentlichung des Wilhelm-Schickard-Institut für Informatik Universität Tübinge
    corecore